package utils

import (
	"crypto/md5"
	"encoding/hex"
	"fmt"
	"io"
	"os"
)

func MkdirP(path string) error {
	if !FileExists(path) {
		if err := os.MkdirAll(path, os.ModePerm); err != nil {
			return err
		}
		fmt.Printf("创建文件夹: %v \n", path)
	}
	return nil
}

// FileExists 判断所给路径文件/文件夹是否存在
func FileExists(path string) bool {
	_, err := os.Stat(path) //os.Stat获取文件信息
	if err != nil {
		return os.IsExist(err)
	}
	return true
}

// IsDir 判断所给路径是否为文件夹
func IsDir(path string) bool {
	s, err := os.Stat(path)
	if err != nil {
		return false
	}
	return s.IsDir()
}

// GetFileMd5 计算文件md5
func GetFileMd5(filePath string) (md5Str string, err error) {
	var file *os.File
	if file, err = os.OpenFile(filePath, os.O_RDONLY, os.ModePerm); err != nil {
		return "", err
	}
	defer file.Close()
	md := md5.New()
	if _, err = io.Copy(md, file); err != nil {
		return "", err
	}
	return hex.EncodeToString(md.Sum(nil)), nil
}
